package OptimalAlgorithm.SlidingWindow;
//给定一个二进制数组 nums 和一个整数 k，假设 最多 可以翻转 k 个 0 ，则返回执行操作后 数组中连续 1 的最大个数 。
//eg:
//输入：nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
//输出：6

//将问题转换为在子数组找到最多k个0的最长子数组
public class LongestOnes {
    public int longestOnes(int[] nums, int k) {
        int zeroCount = 0;
        int len = 0;
        for (int left = 0, right = 0;right < nums.length;right++){
            if(nums[right] == 0){//进窗口
                zeroCount++;
            }
            while (zeroCount > k){//判断
                if(nums[left] == 0){//出窗口
                    zeroCount--;
                }
                left++;
            }
            len = Math.max(len,right - left + 1);
        }
        return len;
    }
}
